package oj;

import java.util.Scanner;

/**
 * @author 郝文雪
 * @date 2022/11/8 15:23
 * @Description Test
 */
public class 数组中未出现的最小正整数 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        /**
         * 索引l(初始为0)，left将数组分成两部分
         * [0,l)是处理完成的部分，其中每个元素都满足arr[i]=i+1
         * [l,r]是待处理的部分
         * 随着数组元素被处理，l会逐渐向右移动
         */
        int l=0;
        int r=n;
        while(l<r){
            /**
             * arr[l]在理想位置
             * 则处理完部分长度加1，然后继续处理未完成部分的下一个待处理元素
             */
            if(arr[l]==l+1){
                l++;
                /**
                 * arr[l]是不合法的数据
                 * 则先将r减一，然后丢掉不合法的数，并将待处理部分最后一个元素填充到l位置继续处理
                  */
            }else if(arr[l]<=l || arr[l]>r || arr[l]==arr[arr[l]-1]){
                arr[l]=arr[--r];
            }else{
                /**
                 * arr[l]合法，但是不在理想位置，需要将他交换到理想位置
                 * 理想位置的计算 p+1=arr[l]  p=arr[l]-1
                 */
                swap(arr,l,arr[l]-1);
            }
        }
        System.out.println(l+1);
    }
    public static void swap(int[] arr,int a,int b){
        int temp=arr[a];
        arr[a]=arr[b];
        arr[b]=temp;
    }
}
